什麼是Github Actions呢?這是Github平台
在2019年上架的CI功能,使用Github Actions可以讓你將以往給Jenkins的工作交給Github來完成,並除了原先Github的版本控管外整合Build、Test、Deploy。這個過程我們稱作是github workflows。
Github Actions相關的中文文件
什麼是github workflows呢? 打一個上方影片的比方,假如我們現在正在寫一個JAVA套件,有多個contributors給予貢獻,也有多個Users。當user發現bug後會發布issue,此時就要思考流程是:
當一個contributor修好了bug,並且pull requests後,要思考流程是:
發布新的版本時要做的流程:
這幾個過程merge code -> Test -> Build -> Deployment
可以稱做一個workflows,當有越來越多的contributors、issues、pull requests,整個workflows就會越混亂,因此,自動化is the best。
什麼驅動workflows呢?我們稱作Github event,例如: Pull Requests created、Issue create、Contributor join、Pull requests merged...等。
所以基本上就是監控event去驅動workflows該做什麼事。
點擊 Acitons,裡面會包含很多根據專案推薦的Workflows流程(左下圖),還有workflow範例(右圖)如新加入的contributor say Greetings之類的。
但是以上先都不管,我們先來簡單的看一下簡單的範例,在你的專案下建立.github/workflows/github-actions-demo.yml
。
name: GitHub Actions Demo
on:
push:
branches:
- "master"
pull_request:
branches: ["master"]
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest
steps:
- run: echo "? The job was automatically triggered by a ${{ github.event_name }} event."
- run: echo "? This job is now running on a ${{ runner.os }} server hosted by GitHub!"
- run: echo "? The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- name: Check out repository code
uses: actions/checkout@v2
with:
fetch-depth: 0
- run: echo "? The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "?️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ github.workspace }}
- run: echo "? This job's status is ${{ job.status }}."
簡單講解一下,可以參考文件
name
: 是workflows的名稱on
: 是驅動workflow的事件,詳細參考,你可以指定哪個branch才會驅動。jobs
: 是一連串的steps組成,你可以擁有1~多個job。steps
: 可以運行命令(run)、執行actions(uses)、設定參數(with)uses
: 使用github上其他人寫好可reuse的action舉個例子,上面的actions/checkout@v2
,你可以在一個名為actions/checkout的repository內找到。進入該repository,打開action.yml
檔,可以看到具體內容,@後面是版本。
run
: 就是執行commandwith
: 設定use actions的變數接著我們把它push上github,點擊repository的actions。可以看到運行的workflow
點擊,打開後你就可以看到CI的輸出。
此外,你在README加上
![example workflow](https://github.com/<OWNER>/<REPOSITORY>/actions/workflows/<WORKFLOW_FILE>/badge.svg)
填入使用者(OWNER)、專案名稱(PEPOSITORY)、你的worflow檔案名稱(WORKFLOW_FILE),即可出現一個驗證符號:
我們明天來實作將Express自動push上Azure雲端並執行的CI整合。